package com.kylin.shared.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.util.CollectionUtils;

import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * 微信支付的支付类型
 * @author Damon S.
 * @version v1.0.1
 * @date 2020年12月16日 20:45
 */
@Getter
@AllArgsConstructor
public enum WxTradeType {
    /**
     * JSAPI--JSAPI支付（或小程序支付）、NATIVE--Native支付、APP--app支付，MWEB--H5支付
     */
    NA(0),
    JSAPI(1),
    NATIVE(2),
    APP(3),
    MWEB(4);

    private final int code;

    public static WxTradeType parse(int code) {
        List<WxTradeType> filteredTypes =
                Arrays.stream(WxTradeType.values())
                        .filter(type -> Objects.equals(type.getCode(), code))
                        .collect(Collectors.toList());
        return CollectionUtils.isEmpty(filteredTypes) ? NA : filteredTypes.get(0);
    }
}
